<?php

/*
    realizzazione del customtype fattura_emessa

    questo va incluso nel file plugin che utilizza il post type
 */

// fissa gli hook
function wpf_fattura_emessa_hooks()
{
	// creo il plugin ed i relativi menu
	register_activation_hook(__FILE__, 'wpf_fattura_emessa_rewrite_flush'); // serve per i permalink
	add_action('init', 'wpf_fattura_emessa_init'); // quando inizializzo la pagina
        add_action('init', 'wpf_fattura_emessa_box_init'); // quando inizializzo la pagina
        
	//add_action('admin_menu', 'wpf_progetto_admin_menu'); // quando genero il men di amministrazione
	add_action('admin_init', 'wpf_fattura_emessa_add_boxes', 1);
        
        add_filter('wpf_fattura_emessa_field', 'wpf_fattura_emessa_renderfield', 10,2);
        
       
	// salvo i dati dei vari box creati
	add_action('save_post', 'wpf_fattura_emessa_save', 10, 2);

        
}



// inizializza quello che serve
function wpf_fattura_emessa_init()
{
	// creazione del posttype
	//@ATTENTION modificare le varie descrizioni
	$labels = array(
		'name' => _x('Fatture emesse', 'Fatture emesse'),
		'singular_name' => _x('Fattura emessa', 'Nome singolare delle fatture emesse'),
		'add_new' => _x('Aggiungi nuova', 'wp-formazione'),
		'add_new_item' => __('Nuova Fattura Emessa'),
		'edit_item' => __('Modifica Fattura Emessa'),
		'new_item' => __('Nuova Fattura Emessa'),
		'all_items' => __('Tutte le fatture emesse'),
		'view_item' => __('Visualizza questa fattura emessa'),
		'search_items' => __('Cerca una fattura emessa'),
		'not_found' => __('Nessuna fattura emessa trovata'),
		'not_found_in_trash' => __('Non ci sono fatture emesse nel cestino'),
		'parent_item_colon' => '',
		'menu_name' => 'Fatture emesse'
	);

	$args = array(
		'labels' => $labels,
		'public' => true,
		'publicly_queryable' => true,
		'show_ui' => true,
		'show_in_menu' => true,
		'query_var' => true,
		'rewrite' => array(
			'slug' => 'fattura_emessa'
		),
		'capability_type' => array(
			'fattura_emessa', 'fatture_emesse'
		),
		'map_meta_cap' => true,
		'has_archive' => true,
		'hierarchical' => true,
		'menu_position' => null,
		'supports' => array(
			'title'
		)
	);

	register_post_type('wpf_fattura_emessa', $args);

	wpf_tassonomia_registra_partner('wpf_fattura_emessa');
}




// serve per gestire i permalink
function wpf_fattura_emessa_rewrite_flush()
{
	wpf_fattura_emessa_init();
	flush_rewrite_rules();
}

// aggiunge i boxes necessari a
function wpf_fattura_emessa_add_boxes()
{
	
        add_meta_box(
			'incassi',
			'Incassi',
			'wpf_fattura_emessa_incassi_box',
			'wpf_fattura_emessa',
			'advanced',
			'core',
			''
	);
        
        add_meta_box(
			'solleciti',
			'Solleciti',
			'wpf_fattura_emessa_solleciti_box',
			'wpf_fattura_emessa',
			'advanced',
			'core',
			''
	);
        
        add_meta_box(
			'voci',
			'Voci fattura',
			'wpf_fattura_emessa_voci_box',
			'wpf_fattura_emessa',
			'advanced',
			'core',
			''
	);
        
        register_post_parentbox('wpf_fattura_emessa', 'Corso',wpf_get_query('corsi_pubblicati'),__("Corso per a cui si riferisce questa fattura", WPF_DOMAIN ));
        
}




function wpf_fattura_emessa_box_init()
{
	
	$form_fields = array(
            'descrizione' => array(
			'type' => 'text',
                	'description' => __("Descrizione", WPF_DOMAIN ), 
                	'howto' => __("Inserisci qui la descrizione fattura emessa", WPF_DOMAIN )
			),
            'numero' => array(
			'type' => 'smalltext',
                	'description' => __("Numero", WPF_DOMAIN ), 
                	'howto' => __("Inserisci qui il numero della fattura emessa", WPF_DOMAIN )
			),
            'incassonetto' => array(
			'type' => 'smalltext',
                	'description' => __("Incasso netto", WPF_DOMAIN ), 
                	'howto' => __("Questo &egrave; l'importo netto da incassare", WPF_DOMAIN )
			),
            
            'iva' => array(
			'type' => 'smalltext',
                	'description' => __("IVA", WPF_DOMAIN ), 
                	'howto' => __("Inserisci qui l'aliquota IVA", WPF_DOMAIN )
			),
            'data_emissione' => array(
			'type' => 'date',
                	'description' => __("Data emissione", WPF_DOMAIN ), 
                	'howto' => __("Inserisci qui la data di emissione della fattura", WPF_DOMAIN )
			),
            'note' => array(
			'type' => 'text',
                	'description' => __("Note", WPF_DOMAIN ), 
                	'howto' => __("Inserisci qui le note", WPF_DOMAIN )
			),
            'documento' => array(
			'type' => 'file',
                	'description' => __("Documento", WPF_DOMAIN ), 
                	'howto' => __("Carica qui la scansione del documento-fattura (max 5MB)", WPF_DOMAIN )
			)
	);
	
	register_post_box('wpf_fattura_emessa', 'dettagli_fattura', 'Dettagli fattura', 'normal', 'core', $form_fields);
        
        
        
}

function wpf_fattura_emessa_voci_box()
{
    global $post;
    $args = array(
        'quantita' => array(
                'label' => 'Quantità',
                'type' => 'number',
                'default' => '0',
                'readonly' => false,
                'hidden'  => false,
        ),
        'descrizione' => array(
                'label' => 'Descrizione',
                'type'  => 'text',
                'default' => ''
        ),
        'importo' => array(
                'label' => 'Importo',
                'type'  => 'text',
                'default' => ''
        ),
        'importototale' => array(
                'label' => 'Importo Totale',
                'type'  => 'readonly',
                'default' => ''
        ),
    );
    $closing = array(
        'imponibile'=> array(
            'label' => 'Imponibile',
            'type'  => 'text',
            'default' => ''
            
        ),
        'importoiva'=> array(
            'label' => 'Importo IVA',
            'type'  => 'text',
            'default' => ''
            
        ),
        'totalefattura' => array(
            'label' => 'Totale Fattura',
            'type'  => 'text',
            'default' => ''
        ),
        'importoritenuta'=> array(
            'label' => 'Importo Ritenuta',
            'type'  => 'text',
            'default' => ''
            
        ),
        'netto' => array(
            'label' => 'Importo Netto Fattura',
            'type'  => 'text',
            'default' => ''
        )
    );

    
    $values = get_post_meta($post->ID, 'voci_fattura',true);
    echo "<br>post_meta : <pre>";
    print_r(get_post_meta($post->ID, 'voci_fattura'),true);
    echo "</pre>";
        

    admin_multifield('voci_fattura',$args, $values, $closing);

    
}

function wpf_fattura_emessa_renderfield($value, $field) {
    global $wpf_fattura_emessa_buffer;
    global $post;
    
    if (!isset($wpf_fattura_emessa_buffer)) {
            $wpf_fattura_emessa_buffer=array();
            $wpf_fattura_emessa_buffer['globalsum']=0;
            $wpf_fattura_emessa_buffer['globalcount']=0;
    }
    switch ($field) {
        case 'importototale': 
                $importototale = $wpf_fattura_emessa_buffer['quantita']*$wpf_fattura_emessa_buffer['importo'];
                $wpf_fattura_emessa_buffer['rowsum']=$importototale;
                $wpf_fattura_emessa_buffer['globalsum']+=$importototale;
                $wpf_fattura_emessa_buffer['globalcount']++;
                return $importototale.' &euro;';
        break;
        case 'imponibile' :
            return '<b>Imponibile</b>&nbsp;&nbsp;'.$wpf_fattura_emessa_buffer['globalsum'].' &euro;';
        break;
        case 'importoiva' :
            return '<b>Importo IVA al '.$post->iva.'% </b>&nbsp;&nbsp;'.($post->iva*$wpf_fattura_emessa_buffer['globalsum']/100).' &euro;';
        break;
        case 'totalefattura' :
            return '<b>Totale</b>&nbsp;&nbsp;'.($wpf_fattura_emessa_buffer['globalsum']*($post->iva+100)/100).' &euro;';
        break;
        
        
        default : $wpf_fattura_emessa_buffer[$field]=$value;return $value;
    }
}

function wpf_fattura_emessa_solleciti_box()
{

}

function wpf_fattura_emessa_incassi_box()
{

}

// cattura e salva i dati del box generale
function wpf_fattura_emessa_save($post_id, $post)
{
	
       if ($post->post_type != 'wpf_fattura_emessa')
	{
		return;
	}
 
    
       $rows = get_post_meta($post_id, 'voci_fattura',true);
        
        
        if ($_POST['voci_fattura__delete']) {
                $delete=$_POST['voci_fattura__delete'];
                $keys = array_keys($delete);
                foreach ($delete as $k=>$v) unset($rows[$k]);
        }
        
        
        $quantita=$_POST['voci_fattura_quantita'];
        $descrizione=$_POST['voci_fattura_descrizione'];
        $importo=$_POST['voci_fattura_importo'];
        
        if ($quantita!='0' && $quantita!='') $rows[]=array('quantita' => $quantita, 'descrizione' => $descrizione, 'importo' => $importo);
        
        update_post_meta($post_id, 'voci_fattura', $rows);
        
	
	$my_post = array();
	$my_post['ID'] = $post_id;
	$my_post['post_title'] = $post->descrizione;
        

	remove_action('save_post', 'wpf_fattura_emessa_save');
	wp_update_post($my_post);
	add_action('save_post', 'wpf_fattura_emessa_save');

}

wpf_fattura_emessa_hooks();

?>
